using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Logic.Agglomerative
{
    interface IAgglomerative
    {
        int ColAvlList
        {
            set;
        }
        
        /**
         * this function returns tow numbers which have the minimal distance between them
         * the number represent the groups we need to merge.     
         */
        Node getMin();

        /**
         * this function get two genomes to merge create the merge object and recalculate the distance frome the other
         * depend on the merge type we gave
         */
        void merge(int first, int second, int typeOfMerge, int stepNum);

        /// <summary>
        /// Get us the number of items in the data whitch is the maximal number of iteration
        /// </summary>
        /// <returns>The maximal number of merges that we cand do</returns>
        int MaxNumOfIteration();
    }
}
